//
// Created by yubin on 2021/3/30.
//

#ifndef LINKLIST_LINKLIST_H
#define LINKLIST_LINKLIST_H


namespace lk {

    using ElemType = int;

    typedef struct LNode {
        ElemType data;
        struct LNode *next;
    } LNode, *LinkList;

    void InitLinkList(LinkList &L);

    void DestroyLinkList(LinkList &L);

    LinkList ListHeadInsert(LinkList &L);

    LinkList ListTailInsert(LinkList &L);

    LNode* GetItem(LinkList &L, int i);

    LNode* LocateItem(LinkList &L, ElemType e);

    bool InsertNode(LinkList &L, ElemType e, int i);

    bool DeleteNode(LinkList &L, int i);

    int Length(LinkList &L);

    void PrintLinkList(LinkList const& L);
}


#endif //LINKLIST_LINKLIST_H
